<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>非布尔值的情况下运算</title>
</head>
<body>
<script>
    /*非布尔值的逻辑运算 || &&
    *   对其先转换为布尔值 在进行计算 并且返回原值
    *   &&与运算
    *       如果第一个值是true 则必然返回第二个值
    *        如果第一个是false 则返回第一个值
    *   ||或运算
    *       如果第一个值是true 则返回第一个值
    *       如果第一个值是false 则返回第2个值
    * */
    //1.&& 与运算 举例1
    var a=1&&2;//进行与&&运算，true&&true 如果两个值都为true 返回后面的值
    console.log("a="+a);
    //2.&& 与运算 举例2
    var b=0&&2;//进行与&&运算，false&&true 如果两个值有一个为false 返回靠前的false值 返回0
    console.log("b="+b);
    //3.&& 与运算 举例3
    var c=2&&0;//进行与&&运算，true&&false 如果两个值有一个为false 返回靠前的false值 返回0
    console.log("c="+c);
    //4.&& 与运算 举例4
    var d=NaN&&0;//进行与&&运算，false&&false 如果两个值有一个为false 返回靠前的false值 返回NaN
    console.log("d="+d);
    //5.&& 与运算 举例5
    var e=0&&NaN;//进行与&&运算，false&&false 如果两个值有一个为false 返回靠前的false值 返回0
    console.log("e="+e);
    //6 || 或运算 举例1
    var f=1||2;//true||true 如果第一个值是true 则返回第一个值
    console.log("f="+f);
    //7|| 或运算 举例2
    var g=1||NaN;//true||false 如果第一个值是true 则返回第一个值
    console.log("g="+g);
    //8|| 或运算 举例3
    var h=1||0;//true||false 如果第一个值是true 则返回第一个值
    console.log("h="+h);
    //8|| 或运算 举例4
    var h=NaN||0;//false ||false 如果第一个值是false 则返回第2个值
    console.log("h="+h);
</script>
</body>
</html>